// Hook： 普通钩子，监听器之前互相独立不干扰
// const { SyncHook } = require('tapable')
const SyncHook = require('./SyncHook')

// 创建实例对象
let hook =  new SyncHook(['name', 'age'])

// 添加事件监听
hook.tap('fn1', function (name, age) {
    console.log('fn1--->', name, age)
})

hook.tap('fn2', function (name, age) {
    console.log('fn2--->', name, age)
})

hook.tap('fn3', function (name, age) {
    console.log('fn3--->', name, age)
})

// 触发事件监听
hook.call('SyncHook', 8)   

/**
 * 01 实例化 hook， 定义 _x = 【fn1, fn2, ...】, taps = [ {}, {}, ...]
 * 02 实例调用 tap taps = [ {}, {}, ...]
 * 03 调用 call 方法，使用工厂类 HookCodeFactory 及其属性方法 setup 和 create
 * 04 主要定义的类有 Hook SyncHook HookCodeFactory
 */
